home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr31 / unp310.zip / UNP.DOC < prev    next >
Text File  |  1993-06-01  |  31KB  |  785 lines

  1.           ┌┐  ┬ ┌┬─┐ ┬ ┬┬──┐       ┌──┬┐     ┌┐ ┌┬──┐
  2.           ││  │ ││ │ │ ││  │          ││    ─┤│ ││  │
  3.           ││  │ ││ │ │ │├──┘        ──┤│     ││ ││  │
  4.           ││  │ ││ │ │ ││             ││ ┌┐  ││ ││  │
  5.           └┴──┘ └┘ └─┘ └┘          └──┴┘ └┘ ─┴┴─└┴──┘
  6.          ─────────────────────────────────────────────
  7.  
  8.                  Ben Castricum
  9.  
  10.                   June 1, 1993
  11.  
  12.  
  13.        This is the documentation belonging to and explaining the use of:
  14.  
  15.                    UNP V3.10
  16.               Compressed executable file expander
  17.  
  18.  
  19.    TOPICS covered in this document:
  20.  
  21.      DISCLAIMER
  22.      PURPOSE OF UNP
  23.      REQUIREMENTS
  24.      GENERAL INFO
  25.      HOW TO USE UNP
  26.      UNP IN ACTION
  27.      MESSAGES
  28.          WHAT UNP CAN HANDLE
  29.          NOTES ON COMPRESSORS
  30.          ERRORLEVEL VALUES
  31.          STILL LOOKING
  32.          THANKS
  33.          CONTACTING ME
  34.  
  35.  
  36.  
  37. DISCLAIMER:
  38. -----------
  39. Although UNP has been tested on several systems, I cannot guarantee that
  40. UNP will be without bugs.  Therefore, I do not take responsibility for any
  41. damage directly or indirectly caused by UNP as a result of known or
  42. unknown errors in it.
  43.  
  44.  
  45.  
  46. PURPOSE OF UNP:
  47. ---------------
  48. UNP tries to reverse the action which programs like PKLITE and LZEXE
  49. perform.  In case you don't know, those programs use data compression on
  50. executable files.  Yet they leave these compressed files in a state such
  51. that they can still be normally executed.  This is great if you want to
  52. save disk space, but it has its disadvantages.  Anyone can now spread a
  53. virus; just compress an infected file and the virus is invisible!
  54. Debugging also becomes a lot more difficult since the code has become
  55. unreadable.  These are the primary reasons behind my writing UNP.  I
  56. could make up some story about loading/decompressing time, but we are
  57. probably talking about a few 100ths of a second.  Well, at least I don't
  58. notice any delay on my 66Mhz...
  59.  
  60. Not only can UNP expand compressed executable files, it is also able to
  61. remove other kinds of routines from such programs.  For instance,
  62. Central Point's Anti-virus (tm) Immunize codes can be safely removed.
  63. Though this removal is currently limited to only a few routines, in the
  64. future this ability might be greatly expanded.
  65.  
  66.  
  67.  
  68. REQUIREMENTS:
  69. -------------
  70. To run UNP you need at least a 8086 microprocessor.  However if you want
  71. to take full advantage of UNP, MS-DOS 5.0 (or higher) is recommended since
  72. UNP tries to allocate UMBs.  Lower versions of DOS will work without much
  73. difference since UNP only uses base memory and UMBs.  It requires about
  74. 10k of memory, with the additional amount of memory required depending on
  75. the program being processed.
  76.  
  77.  
  78.  
  79. GENERAL INFO:
  80. -------------
  81. Before you start using UNP, I would like to point out a few things which
  82. you might take into consideration.
  83.  
  84. Compressed EXE files containing an overlay may not work correctly after
  85. they have been decompressed.  Decompression expands the code size of the
  86. EXE file which also means that the overlay moves up.  Some programs do not
  87. check where the overlay currently is but just use a constant to get the
  88. overlay.  If this is the case, most anything can happen.
  89.  
  90. When you use UNP to convert a file to another structure, please take
  91. into consideration that the converted program never runs under the exact
  92. same conditions as it did before.  Though these differences are likely
  93. not to cause any problems with most programs, there are always programs
  94. which expect just that what is changed by conversion.
  95.  
  96. One way to protect yourself against problems caused by such problems is
  97. to use UNP's -b which is .BAK backup file creation option to create a
  98. copy of the original compressed file.  If, after running the
  99. uncompressed program you find an error, you can simply delete the bad
  100. copy and rename the .BAK file.
  101.  
  102.  
  103.  
  104. HOW TO USE UNP:
  105. ---------------
  106. To get help type UNP on the command line without parameters or use the
  107. '-?' switch.  The first line of the help screen is a short line
  108. describing how to pass information to UNP.  Let's analyze this step by
  109. step.
  110.  
  111.  
  112. usage: UNP command [options] [d:][/path]Infile [[d:][/path]Outfile]
  113.  
  114.  
  115. * commands:
  116. e = expand compressed file (default)
  117.    This command expands the compressed file.  Since it is the default
  118.    command, this command will also be executed when no command is
  119.    specified.  It's here to avoid confusion.
  120.  
  121. c = convert to COM file
  122.    Some .EXE files can be converted to .COM files.  You can do this by
  123.    using this command.  You should only convert a file when you know
  124.    exactly what you are doing.
  125.  
  126. i = info only
  127.    If you just want some information about the file, this is the command
  128.    to use.  UNP will show all information like the E command but will
  129.    will not decompress or write the file back.
  130.  
  131. l = load and save, no decompressing (only for EXE files).
  132.    This command loads an .EXE file but does not expand it.  It will be
  133.    written back just like a decompressed file would be written back.  This
  134.    is useful in case you want to remove an overlay or remove irrelevant
  135.    header data.
  136.  
  137. s = search for compressed files
  138.    When you use this command, only a small list of compressed files
  139.    matching the Infile wildcard will be generated.  The list created will
  140.    be in the form of "filename.ext (compressor)".  When a compressor is
  141.    written between brackets ('[' and ']') then it is unsure with what
  142.    version it is compressed or even if it is compressed with it.
  143.  
  144. x = convert to EXE file
  145.    Some compressors can only compress .EXE files (like LZEXE).  With this
  146.    command you can convert a .COM file to an .EXE file.  The resulting
  147.    file will be written back with an .EXE extension by default.
  148.  
  149.  
  150. * options:
  151. -? = help (this screen)
  152.    For a list of UNP commands or options use this switch.  Any other
  153.    switch or command used on the same line will be ignored.
  154.  
  155. -a = automatic retry on decompressed files
  156.    Some files have been altered more than once.  This switch will make
  157.    UNP to process the file again when it was changed.  Useful when you
  158.    want to uncompress a file which also has been Immunized by CPAV.
  159.  
  160. -b = make backup .BAK file of original
  161.    If you want to keep a backup of your original file (very wise) use this
  162.    switch.  The original file will be renamed to a file with a .BAK
  163.    extension.
  164.  
  165. -c = ask for confirmation before decompressing
  166.    This will force UNP to ask you if you want to decompress the file each
  167.    time it has found a new compressed file.
  168.  
  169. -h = remove irrelevant header data
  170.    Most linkers add useless data to the .EXE header.  This switch removes
  171.    all such useless information, thus shrinking the header size.
  172.  
  173. -i = do not intercept INT 21h calls
  174.    By default UNP watches the DOS interrupt (21h) to check if the program
  175.    is running as expected.  Any unexpected call to INT 21h will make UNP
  176.    abort the process.  If you have any weird TSRs resident you might have
  177.    to use this switch.  I had to use it while debugging with Turbo
  178.    Debugger.
  179.  
  180. -k = pklite signature; - = don't add, + = add always, ? = ask
  181.    With this switch you can handle the pklite signature.  There are 3
  182.    possibilities :
  183.    -k- = the pklite signature will not be added, this will also be the
  184.      case if you only use -k (to stay dislite compatible)
  185.    -k+ = always add the pklite signature, this is the default of UNP so
  186.      you can just as well leave the -k switch away if you want this
  187.    -k? = when you use this, UNP will ask you each time it has found a
  188.      signature (like UNP V3.01 or earlier did)
  189.  
  190. -o = overwrite output file if it exists
  191.    If you want to have the destination file overwritten, you can avoid
  192.    the question for permission by specifying this switch on the command
  193.    line.
  194.  
  195. -p = align header data on a page
  196.    It is said that .EXE files with a header size that is a multiple of
  197.    512 bytes load faster (this could make sense since a sector is also
  198.    512 bytes).  This switch will expand the header to the nearest
  199.    multiple of 512 bytes.
  200.  
  201. -r = remove overlay data
  202.    If something is appended to an .EXE it is called an overlay.  This
  203.    switch will let the file size of the outfile be the same as the load
  204.    image.  So anything that was appended to the file will be thrown away.
  205.    An overlay can be used for all kinds of data, so removing this can
  206.    result in throwing away something useful.
  207.  
  208. -u = update file time/date to current time/date
  209.    By default UNP sets the time/date of the destination file to the same
  210.    time/date as the original source file.  If you want to have it updated
  211.    to the current time/date use this switch
  212.  
  213. -v = verbose
  214.    When you use this switch UNP will give you some additional information.
  215.    I added this switch for debugging purposes.
  216.  
  217.  
  218. *[d:][/path]Infile
  219.    If you want to process files you must tell UNP which ones.  This is the
  220.    location to specify them.  Starting with V3.00, UNP can now handle
  221.    wildcards in the filename.  Filenames without an extension will select
  222.    all files with a .COM or .EXE extension.
  223.  
  224.  
  225. *[[d:][/path]Outfile]
  226.    The destination file is optional. If you don't specify one, the source
  227.    file will be overwritten.  You cannot use wildcards in this.  Also, you
  228.    should not specify a destination file when you want to decompress more
  229.    than one file.
  230.  
  231.  
  232.  
  233. UNP IN ACTION:
  234. --------------
  235. When you execute UNP you can get several lines of information. Following
  236. is an explanation of what those lines mean:
  237.  
  238.  
  239. processing file : [D:][PATH\]FILENAME.EXT
  240.  
  241.    This shows the name of the file being processed as specified on the
  242.    command line.
  243.  
  244.  
  245. file size       : X
  246.  
  247.    The file size reported by DOS will be shown here.
  248.  
  249.  
  250. file structure  :
  251.  
  252.    UNP recognizes 4 file structures:
  253.    - executable (EXE)
  254.       If the file starts with the 'MZ' or 'ZM' signature and does not
  255.       contain the 'NE' signature then this structure is assumed.  With EXE
  256.       files there are two options UNP recognizes:
  257.       - convertible
  258.          The file can be converted to a COM file structure.
  259.       - loads into high memory
  260.          The program is loaded as high as possible in the allocated memory
  261.          block (this requires some other loading routines).
  262.  
  263.    - Windows or OS/2 1.x new executable
  264.       The file starts with the 'MZ' or 'ZM' signature and contains the
  265.       'NE' signature.
  266.  
  267.    - data file
  268.       The file does not contain the 'MZ' or 'ZM' signature but is too
  269.       large to be a COM file.
  270.  
  271.    - binary (COM)
  272.       This is shown in all other cases.
  273.  
  274.  
  275. EXE part sizes  : header X bytes, code Y bytes, overlay Z bytes
  276.  
  277.    Of course you will only get this line if you are processing an EXE file.
  278.    This shows how the file is built up.  If you add X Y and Z you should
  279.    get the file size reported by DOS.
  280.  
  281.  
  282. processed with  :
  283.  
  284.    If UNP recognizes some program's work in the file, it will try to tell
  285.    you what program it recognizes and when possible what version of that
  286.    program.
  287.  
  288.  
  289. action          :
  290.    UNP not only decompress files it has the ability to do other
  291.    things as well.  There can only be one action performed at a time.
  292.    This is a list of actions UNP reports:
  293.  
  294.    - decompressing... done
  295.       This is the decompression action, probably the most used action.
  296.  
  297.    - removing immunize code... done
  298.       When a file has been immunized with Central Point Anti-Virus, a
  299.       piece of code is added to the file.  UNP has the ability to remove
  300.       this code.
  301.  
  302.    - removing scrambling... done
  303.       UNP recognizes one scrambling routine. When you see this message
  304.       you have got a program which contains it.
  305.  
  306.    - removing 'XX' signature
  307.       Starting with UNP V3.02, the PKLITE signature added to fake PKLITE
  308.       decompression can be removed.  This message will be shown if UNP has
  309.       found a removable signature and is trying to remove it.
  310.  
  311.    - converting to EXE file structure
  312.       The file will be converted to one with an .EXE file structure
  313.  
  314.    - converting to COM file structure
  315.       The file will be converted to one with an .COM file structure
  316.  
  317.  
  318. new size        : X
  319.  
  320.    When the file has been written back UNP reports the new file size to
  321.    you in this line.
  322.  
  323.  
  324. All other messages are explained in the section below.
  325.  
  326.  
  327.  
  328. MESSAGES:
  329. ---------
  330. UNP has 6 kinds of messages other than the usual information it can display:
  331.  
  332. * Questions.  Although I tried to make this program as smart as possible,
  333.   it still can't read minds and things like that.  So sometimes it will
  334.   ask you for something it wants to know.
  335.  
  336. Add 'pk'/'PK' signature to fake PKLITE decompression (y/n)?
  337.    This question will only appear if you use -k? on the command line.
  338.    Answering 'Y' to this question will add 14 bytes of code that fakes
  339.    PKLITE decompression.  The correct signature will be displayed and used
  340.    automatically ('pk' for V1.20 and others 'PK').
  341.  
  342. File FILENAME.EXT already exists.  Overwrite (y/n)?
  343.    The filename that UNP wants to write the resulting file to already
  344.    exists.  If you haven't specified the -o switch it will ask if it can
  345.    overwrite it.  Answering 'N' will proceed to the next file.
  346.  
  347. Program is protected, please enter password:
  348.    This question will appear when you are trying to decompress a program
  349.    which is compressed with TINYPROG with the password option.  You are
  350.    asked to type the password used.  This is not to verify whether you are
  351.    the rightful owner or not, but I just couldn't find a way around it.
  352.  
  353. Remove this routine from file (y/n)?
  354.    You have specified the -c switch and UNP has found a file it
  355.    recognizes as being processed with something.  Now it wants to know
  356.    if you like to remove the routine it has found.
  357.  
  358.  
  359. * INFO messages, these messages are only displayed when you have specified
  360.    the -V switch.  I've added them for debugging purposes.
  361.  
  362. INFO- Attempting to increase available memory for decompression.
  363.    This only shows up if you are trying to decompress PKLITE V1.00ß (2).
  364.    When this happens, UNP uses some other strategy to calculate the memory
  365.    it allocates for decompressing.  By default UNP only allocates as less
  366.    memory as possible.  This strategy allocates 15/16 of the memory block
  367.    the program is currently loaded in.
  368.  
  369. INFO - command line = " ... "
  370.    This message shows how UNP has interpreted the things you typed on the
  371.    command line.  Great for debugging purposes!
  372.  
  373. INFO - First 64K of base memory has been fully allocated.
  374.    Some compressors use the segment below their own code.  Since it is
  375.    possible to load the operating system in upper/high memory there might
  376.    not be a complete segment available.  This message tells you there has
  377.    been memory allocated to ensure there is a complete segment below.
  378.    Note that this is the same thing that the program LOADFIX.COM supplied
  379.    with MS-DOS 5 does.
  380.  
  381. INFO - Overlay copy overruled, overlay not copied to destination file.
  382.    Normally UNP copies any overlay found on the original program to the
  383.    destination.  This is one of the exceptions.  CRUNCHER and SEA-AXE use
  384.    the overlay to store the compressed data for the file.  Copying the
  385.    overlay would result in a program containing twice its code, once in
  386.    compressed and once in the decompressed form.  This message indicates
  387.    that UNP has removed the overlay to avoid this problem.
  388.  
  389. INFO - Program loaded at XXXXh, largest free memory block: X bytes.
  390.    Pretty obvious.  The address where UNP is loaded is displayed along
  391.    with the largest block it can allocate.
  392.  
  393. INFO - Using FILENAME.EXT as temp file.
  394.    UNP tells you what it will be using as temporary file.  This name is
  395.    composed of the TEMP variable and the default temporary name.
  396.  
  397. INFO - Wildcard matches X filename(s), stored at XXXXh.
  398.    This tells you how many filenames UNP has found that match the wildcard
  399.    and where it has stored the names found.
  400.  
  401.  
  402. * WARNING messages.  UNP sometimes takes actions the user should be
  403.    notified of.  In those cases a warning message is displayed.
  404.  
  405. WARNING - Adding 'XX' signature to fake PKLITE decompression.
  406.    The program you are decompressing was compressed by PKLITE V1.14 or
  407.    higher with extra compression.  By default UNP adds 14 bytes of code
  408.    that will let the program think it is still compressed.  To remove
  409.    this piece of code you can use UNP E on it.
  410.  
  411. WARNING - File adds 'XX' signature (added by UNP V3.01 or earlier).
  412. WARNING - File adds 'XX' signature (added by DISLITE V1.15).
  413.    Your file has already been decompressed and has the signature to fake
  414.    PKLITE decompression appended.  This signature is ignored to continue
  415.    the search for more decompression routines.
  416.    All signatures added by UNP V3.02 or higher and the DISLITE signatures
  417.    which do not use a relocation item will act as a decompression routine,
  418.    so UNP E will remove them.
  419.  
  420. WARNING - File already has .BAK extension, no backup created.
  421.    UNP has just unpacked a .BAK file and you have specified the -B switch.
  422.    Creating a .BAK file of a file which already has a .BAK extension is
  423.    impossible so the source file will be overwritten and there will be no
  424.    backup created.
  425.  
  426. WARNING - Infile and Outfile are same, Outfile ignored.
  427.    You have specified the file twice on the command line, meaning that the
  428.    destination file is the same as the source file.  Since this is the
  429.    default situation the second name is ignored.
  430.  
  431. WARNING - Invalid or missing stored header information.
  432.    Normally the compressor used on the program you are trying to
  433.    decompress stores a part of the original header.  UNP has compared
  434.    this information with the data it thinks it should be and has come to
  435.    the conclusion that these mismatch.  If this happens the default UNP
  436.    header will be used.
  437.  
  438. WARNING - Missing last byte, unable to completely restore file.
  439.    The SHRINK compressor does not correctly compresses files containing
  440.    all 256 characters.  When this has happened the last byte of the
  441.    program is thrown away.  It's not possible to get that byte back so the
  442.    decompressed file is mismatching in 1 or more bytes at the end with the
  443.    original file.
  444.  
  445. WARNING - Outfile specified, -B option ignored.
  446.    You have specified a destination file and the -B switch.  Because I see
  447.    no sense in this, the -B option will then be ignored.
  448.  
  449.  
  450. * ERROR messages.  In some cases the desired action cannot be performed or
  451.   has failed.  These messages tell you why this is so and what has
  452.   happened.  UNP will continue with the next file.
  453.  
  454. ERROR - Cannot handle this decompression routine.
  455.    UNP has recognized the way your program has been compressed but is not
  456.    (yet) able to decompress it.
  457.  
  458. ERROR - File already is a .COM file.
  459.    You are trying to convert a .COM file to a .COM file.
  460.  
  461. ERROR - File already is an .EXE file.
  462.    You are trying to convert a .EXE file to a .EXE file.
  463.  
  464. ERROR - File contains overlay.
  465.    One thing you can't have with .COM files is overlays.  If you want to
  466.    convert anyway first remove the overlay.
  467.  
  468. ERROR - File has invalid entrypoint (CS:IP <> FFF0h:0100h)
  469.    To have a converted .EXE file start at the right place, the programs
  470.    initial CS:IP should point to FFF0:0100h.  If this is not true you get
  471.    this error message.
  472.  
  473. ERROR - File has relocation items.
  474.    You tried to convert an .EXE file with relocation items to a .COM file.
  475.    A .COM file cannot handle relocation items.
  476.  
  477. ERROR - File is too large for .COM file.
  478.    The maximum size for a .COM file is much shorter than the one for an
  479.    .EXE file.  So it can happen that the .EXE file is too large to be
  480.    converted to a .COM file.
  481.  
  482. ERROR - Unexpected call to INT 21h, decompression failed.
  483.    When decompressing, UNP passes control to the program.  When it does
  484.    not get control back it is very likely that an interrupt 21h will take
  485.    place sooner or later (INT 21h is the most important interrupt).  UNP
  486.    checks for unexpected calls to this interrupt to ensure it's still in
  487.    control.  To disable this checking use the -i switch.
  488.  
  489.  
  490. * DOS ERROR messages, these errors are things UNP tried to do but for some
  491.   reason your Operating System didn't allowed it.  UNP will quit and will
  492.   have the I/O ERROR exit code.  If you find any use for UNP you are
  493.   probably an experienced DOS user and know how to solve the problem so I
  494.   will only give you the messages.
  495.  
  496. DOS ERROR - unable to create file
  497.  
  498. DOS ERROR - unable to open file
  499.  
  500. DOS ERROR - unable to read from file
  501.  
  502. DOS ERROR - unable to write to file
  503.  
  504.  
  505. * FATAL ERROR messages.  When one of those messages appear something is
  506.   really wrong and UNP cannot continue its work.  It will quit and
  507.   probably have an exitcode for the situation occurred.
  508.  
  509. FATAL ERROR - Decompressing many files into one.
  510.    You have specified a destination file, but there is more than one
  511.    source file.
  512.  
  513. FATAL ERROR - Divide overflow (INT 00h) generated by CPU.
  514.    This means that an invalid DIV instruction has been executed.
  515.    Normally this will cause DOS to terminate the program.  UNP hooks this
  516.    so it can set the interrupt's pointers back before the program quits.
  517.  
  518. FATAL ERROR - No files found matching FILENAME.EXT
  519.    UNP could not find any files to decompress.
  520.  
  521. FATAL ERROR - Not enough memory ...
  522.    UNP tried to allocated some memory but it got an error back.  This
  523.    message tells you what it needed the memory for.
  524.  
  525. FATAL ERROR - Output path/file must not contain '*' or '?'.
  526.    You have used wildcards in the destination file.  This is not allowed.
  527.  
  528. FATAL ERROR - User abort, ^C/^Break pressed (INT 23h).
  529.    Interrupt 23h is called when DOS detects that Ctrl-C or Ctrl-Break is
  530.    pressed.  UNP hooks this to be able to restore the interrupts it uses.
  531.  
  532.  
  533. WHAT UNP CAN HANDLE:
  534. --------------------
  535. Of course you would like to know what programs UNP can currently handle.
  536.  
  537. Well, here is a list of routines that UNP V3.10 is known to remove:
  538.  
  539. * routines found in .COM files
  540. CENTRAL POINT ANTI-VIRUS V1             ; immunize code
  541. COMPACK V4.4
  542. COMPACK V4.5
  543. DIET V1.00
  544. DIET V1.02b or V1.10a
  545. DIET V1.20
  546. ICE V1.00
  547. PKLITE V1.00ß
  548. PKLITE V1.03
  549. PKLITE V1.05
  550. PKLITE V1.12
  551. PKLITE V1.13
  552. PKLITE V1.14
  553. PKLITE V1.15
  554. PRO-PACK V2.08, emphasis on packed size
  555. PRO-PACK V2.08, emphasis on packed size, locked
  556. PRO-PACK V2.08, emphasis on unpacking speed
  557. PRO-PACK V2.08, emphasis on unpacking speed, locked
  558. SCRNCH V1.00
  559. SHRINK V1.00
  560.  
  561.  
  562. * routines found in .EXE files
  563. CENTRAL POINT ANTI-VIRUS V1             ; immunize code
  564. COMPACK V4.4
  565. COMPACK V4.5
  566. CRUNCHER V1.0                ; +.COM files
  567. DIET V1.01
  568. DIET V1.02b, V1.10a or V1.20            ; small & large, with & without items
  569. DIET V1.44                              ; same as above + .COM files
  570. DISLITE V1.15                           ; small signatures (no items in sig)
  571. EXEPACK V4.00
  572. EXEPACK V4.05 or V4.06
  573. EXEPACK (DOS5)
  574. EXEPACK patched with EXPAKFIX V1.0
  575. LINK /EXEPACK V3.60 or V3.64
  576. KVETCH V1.02ß
  577. LZEXE V0.90
  578. LZEXE V0.91 or V1.00a
  579. PGMPAK V0.14
  580. PKLITE V1.00ß 0,1,2
  581. PKLITE V1.03  0,1,2,3
  582. PKLITE V1.05  0,1,2
  583. PKLITE V1.10  3
  584. PKLITE V1.12  0,1,2,3
  585. PKLITE V1.13  0,1,2,3
  586. PKLITE V1.14  0,1,2,3
  587. PKLITE V1.15  0,1,2,3
  588. PKLITE V1.20  1
  589. PKLITE V1.20  1,3
  590. PRO-PACK V2.08, emphasis on packed size
  591. PRO-PACK V2.08, emphasis on packed size, locked
  592. PRO-PACK V2.08, emphasis on unpacking speed
  593. PRO-PACK V2.08, emphasis on unpacking speed, locked
  594. SEA-AXE
  595. TINYPROG V1.0
  596. TINYPROG V3.3
  597. TINYPROG V3.6
  598. UNP V3.02 or higher                ; fake PKLITE signature
  599.  
  600. In total there are 20+63=83 routines in 16 different programs (not
  601. counting different versions) recognized.
  602.  
  603.  
  604.  
  605. NOTES ON COMPRESSORS:
  606. ---------------------
  607. EXEPACK:
  608.    Decompressing of an EXEPACKed file can result in a slightly larger
  609.    file.  This is because EXEPACK rounds the file size to be a multiple of
  610.    16 bytes.
  611.  
  612. LZEXE V1.00a:
  613.    Several people have contacted me about this one.  This utility is the
  614.    same as LZEXE V0.91, except for some minor options.  It is offered
  615.    to the readers of INFO PC by IS2 France Diffusion (at least that's what
  616.    I think the text says).  Unfortunately I don't know where it's
  617.    available.
  618.  
  619. PGMPAK V0.14:
  620.    When you compress a file with this compressor, an overlay of 12 bytes
  621.    will be added.  To be exactly, the name and version number is added.
  622.    In this case: "PGMPAK V0.14".  This overlay is not automatically removed
  623.    when you decompress it.  To remove it, use the -R switch.
  624.  
  625. PKLITE:
  626.    PKLITE V1.00ß seems to have a bug in it.  While testing it, I found
  627.    that with some files an overlay of 512 bytes was added.  Needless to
  628.    say that when this happened the compressed file did not run correctly.
  629.    Since UNP writes the file back as it would be run in memory the file
  630.    decompressed with UNP wouldn't run either.  However extracting with
  631.    PKLITE -X resulted in the original file!  Since this version of pklite
  632.    is hardly used and even more unlikely is that someone wants to
  633.    decompress such a file I didn't bother to write a new routine that
  634.    fixes that bug.
  635.  
  636.    PKLITE V1.14 and up (according to the documentation) add the 'PK'
  637.    signature with extra compressed files to let the program check if it is
  638.    still compressed with PKLITE.  To avoid that the program detects it has
  639.    been decompressed UNP adds by default 14 bytes of code that places the
  640.    signature in the PSP like PKLITE does.
  641.  
  642. SCRUNCH:
  643.    In most cases, UNPs decompression routines are created when using
  644.    test files.  Unfortunately I don't have a copy of scrunch so this is
  645.    a bit difficult to ensure it works.  Of course there are other
  646.    decompression routines built the same way but the file I received
  647.    compressed with this compressor looked like it was converted to a
  648.    .COM file before it was compressed (it contained relocation items),
  649.    but this conversion could just as well be a part of the scrunch
  650.    compression.  If I receive more files compressed with this one I will
  651.    improve and adjust the routine when needed.
  652.  
  653. SHRINK V1.00:
  654.    This compressor is a bad implementation of Run Length compression.  It
  655.    contains two bugs one of which is in the decompression routine.  The
  656.    bugs are triggered when the file to be compressed contains all 256
  657.    bytes.  I have written my own decompression routine for this compressor
  658.    that is able to avoid one bug.  The other bug is that the last byte of
  659.    the compressed file is thrown away making it impossible to fully
  660.    rebuild the file.  If this is the case, UNP will display a warning.  It
  661.    is always better to decompress it, even if the last byte is missing.
  662.  
  663.  
  664.  
  665.  
  666. ERRORLEVEL VALUES:
  667. ------------------
  668.   0  no error occurred
  669.   1  help text is displayed
  670.   2  no files found to process
  671.   3  decompressing many files into 1 /  Outfile contains wildcards
  672.   4  some I/O error occurred
  673.   5  could not allocate enough memory
  674.   6  CPU generated divide overflow
  675.   7  user pressed ^C or ^Break
  676.  
  677.  
  678.  
  679. STILL LOOKING:
  680. --------------
  681. I am still trying to improve my program.  If you'd like to help me with
  682. that and you think you've got something useful, like a compressor or some
  683. other program that manipulates files, please mail me the program.  If you
  684. cannot mail it to me for some reason (I can imagine this for registered
  685. versions) then contact me anyway.  Maybe we can work something out.
  686.  
  687.   Programs I own a copy of or have access to:
  688. COMPACK V4.4
  689. COMPACK V4.5
  690. CRUNCHER V1.0
  691. CENTRAL POINT ANTI-VIRUS V1
  692. DIET V1.02b
  693. DIET V1.10a
  694. DIET V1.20
  695. DIET V1.44
  696. EXEPACK V4.00
  697. EXEPACK V4.05
  698. EXEPACK V4.06
  699. ICE V1.00
  700. KVETCH V1.02ß
  701. LINK V3.60
  702. LINK V3.64
  703. LZEXE V0.90
  704. LZEXE V0.91
  705. LZEXE V1.00a
  706. PGMPAK V0.14
  707. PKLITE V1.00ß
  708. PKLITE V1.03
  709. PKLITE V1.05
  710. PKLITE V1.12
  711. PKLITE V1.12 Professional
  712. PKLITE V1.13
  713. PKLITE V1.14
  714. PKLITE V1.15
  715. PKLITE V1.15 Professional
  716. PRO-PACK V2.08
  717. SCRNCH V1.00
  718. SHRINK V1.00
  719. TINYPROG V1.0
  720. TINYPROG V3.3
  721. TINYPROG V3.6
  722.  
  723. I also have a copy of SYSPACK V0.1 and SLIM V1.10 but these programs do
  724. not really fit into UNP.  I'm considering handling .SYS files too though.
  725. But don't count on it.
  726.  
  727.  
  728.  
  729. LATEST VERSION:
  730. ---------------
  731. People have asked me how I make my programs available to the public.
  732. Well, the first widespread version is V2.13 which I uploaded to Simtel
  733. (a large Internet repository containing many MS-DOS files).  I am unsure
  734. how files are handled on Simtel but it seems that a file uploaded there
  735. is made available on WSMR-SIMTEL20.Army.Mil and OAK.Oakland.Edu
  736. automatically. There are several additional anonymous FTP sites that
  737. mirror Simtel including wuarchive.wustl.edu.
  738.  
  739. Since I don't have FTP access I don't know how to get it through FTP :(
  740.  
  741.  
  742.  
  743. THANKS:
  744. -------
  745. Although I did all the programming, many people have helped me improve
  746. this program.  So thanks go to (in alphabetical order):
  747.  
  748. Vesselin Vladimirov Bontchev, Jan-Pieter Cornet, Kemal Djakman,
  749. Zago Franck, Tjalve Godager, Kai-Uwe Herbing, Hamish Hubbard, Yaron Keren,
  750. David Kirschbaum, Michael D. Lawler, Onno van der Linden, Inbar Raz,
  751. Martin Saxer, Martin van der Vis
  752.  
  753. And many others, including all those people who noticed the infamous LZEXE
  754. bug in V2.13.
  755.  
  756.  
  757.  
  758. CONTACTING ME:
  759. --------------
  760. If you want to contact me, my address and E-mail address can be found
  761. below this text.  Though E-mail used to be the fastest way to contact me,
  762. it might take some time after, let's say, May 1993.  After that I will
  763. probably be working as a trainee somewhere and don't know if I will have
  764. the time to go to the school on a regular basis.
  765.  
  766. I will respond, just don't expect a fast response. However, after my
  767. trainee period ends (August 1994) I should have full access again for at
  768. least a year!
  769.  
  770. It's always nice to receive mail telling me that UNP is appreciated, but
  771. if you want to express your gratitude in material things a donation is
  772. very welcome.  Since I do not want to cripple my program I try to offer
  773. people who have donated something such as better user support.  If you
  774. really want to support UNP then send $5 or more (no checks please,
  775. they'll probably cost me more to cash/convert than they are worth) to:
  776.  
  777. My address:                       E-Mail (see above):
  778.   Ben Castricum                     benc@solist.htsa.aha.nl
  779.   Van Loenenlaan 10
  780.   1945 TX  Beverwijk
  781.   The Netherlands
  782.  
  783.  
  784. *** end of UNP V3.10 documentation ***
  785.